package cn.ifly.service.impl;

import cn.ifly.mapper.UserMapper;
import cn.ifly.model.User;
import cn.ifly.service.IUserService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

//用户业务层接口实现类
@Service
public class UserServiceImpl implements IUserService {

    //注入UserMapper(通常用于 Spring 管理的 Bean )
    @Autowired
//    注解告诉 Spring 在 Spring 应用上下文中查找一个 UserMapper 类型的 Bean，并将其实例赋值给 userMapper 变量
    private UserMapper userMapper;

    //   添加用户
    @Override
    public void addUser(Map<String, Object> map) {
        userMapper.addUser(map);
    }

    //根据用户姓名更新用户信息
//    @param map 包含用户姓名和用户信息的 Map
    @Override
    public void updateUser(Map<String, Object> map) {
        userMapper.updateUser(map);
    }

    //根据用户ID更新用户信息
    @Override
    public void updateUserById(Map<String, Object> map) {
        userMapper.updateUserById(map);
    }

    /**
     * 根据用户姓名删除用户
     *
     * @param map
     */
    @Override
    public void delUser(Map<String, Object> map) {
        userMapper.delUser(map);
    }

//    查询用户列表
//    @param map
//    @Return

    @Override
    public Map<String, Object> queryUserList(Map<String, Object> map) {
        //获取当前页码 map.get("pageNum")
        int pageNum = Integer.parseInt(map.get("pageNum").toString());
        //每页显示的条数
        int pageSize = Integer.parseInt(map.get("pageSize").toString());
        //调用分页插件
        PageHelper.startPage(pageNum, pageSize);
        //执行查询
        List<User> userList = userMapper.queryUserList(map);
        //设置返回数据
        PageInfo pageInfo = new PageInfo(userList);
        //获取数据总条数
        long total = pageInfo.getTotal();
        HashMap<String, Object> resultMap = new HashMap<>();
        resultMap.put("total", total);
        resultMap.put("rows", userList);
        return resultMap;
    }

    /**
     * 修改用户密码
     *
     * @param map
     */
    @Override
    public void updateUserPass(Map<String, Object> map) {
        userMapper.updateUserPass(map);
    }


}
